home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / util / vec.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  4KB  |  104 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. from __future__ import division
  5. from itertools import izip
  6. import math
  7.  
  8. class vector(list):
  9.     
  10.     def __init__(self, *a):
  11.         if len(a) == 1:
  12.             list.__init__(self, *a)
  13.         else:
  14.             list.__init__(self, iter(a))
  15.  
  16.     
  17.     def __getslice__(self, i, j):
  18.         return vector(list.__getslice__(i, j))
  19.  
  20.     
  21.     def __add__(self, v):
  22.         return vector((lambda .0: for x, y in .0:
  23. x + y)(izip(self, v)))
  24.  
  25.     
  26.     def __neg__(self):
  27.         return vector((lambda .0: for x in .0:
  28. -x)(self))
  29.  
  30.     
  31.     def __sub__(self, v):
  32.         return vector((lambda .0: for x, y in .0:
  33. x - y)(izip(self, v)))
  34.  
  35.     
  36.     def __mul__(self, o):
  37.         
  38.         try:
  39.             iter(o)
  40.         except:
  41.             return (vector,)((lambda .0: for x in .0:
  42. x * o)(self))
  43.  
  44.         return vector((lambda .0: for x, y in .0:
  45. x * y)(izip(o)))
  46.  
  47.     
  48.     def div(self, o):
  49.         
  50.         try:
  51.             iter(o)
  52.         except:
  53.             return (vector,)((lambda .0: for x in .0:
  54. x / o)(self))
  55.  
  56.         return vector((lambda .0: for x, y in .0:
  57. x * y)(izip(o)))
  58.  
  59.     
  60.     def __repr__(self):
  61.         return 'vec' + repr(tuple(self))
  62.  
  63.     
  64.     def distance(cls, v1, v2):
  65.         return sum((lambda .0: for x, y in .0:
  66. (y - x) ** 2)(izip(v1, v2))) ** 0.5
  67.  
  68.     distance = classmethod(distance)
  69.     
  70.     def to(self, other):
  71.         return vector.distance(self, other)
  72.  
  73.     
  74.     def length(self):
  75.         return vector.distance(self, (0,) * len(self))
  76.  
  77.     length = property(length)
  78.     
  79.     def normal(self):
  80.         
  81.         try:
  82.             return self.div(self.length)
  83.         except ZeroDivisionError:
  84.             return vector((0,) * len(self))
  85.  
  86.  
  87.     normal = property(normal)
  88.     
  89.     def zero(n = 2):
  90.         return vector((0,) * n)
  91.  
  92.     zero = staticmethod(zero)
  93.     
  94.     def angle(self):
  95.         
  96.         try:
  97.             return abs(math.atan(self[1] / self[0]) * 180 / math.pi)
  98.         except ZeroDivisionError:
  99.             return 90
  100.  
  101.  
  102.     angle = property(angle)
  103.  
  104.